<style scoped src="./index.scss" lang="scss" rel="stylesheet/scss"></style>
<template src="./index.html"></template>
<script>
import Edit from "../edit/warp/index";
import updateDialog from "@/components/updateDialog/index";
import AddTagsDialog from "@/components/AddTagsDialog/index";
import freezeDialog from "@/directives/freezeDialog/index";
import Report from "./../report/index";
export default {
  mixins: [
    Vue.prototype.$vFN.Mixins.Base,
    Vue.prototype.$vFN.Mixins.Page,
    Vue.prototype.$vFN.Mixins.Table,
  ],
  components: {},
  data() {
    return {
      appWindow: window,
      moreSearchShow: false,
      // 页面接口地址
      apiUrl: {
        list: "mall-site-portal/member/list",
        addLabel: "mall-site-portal/member/batchMemberTag", //添加标签
        changeMoney: "mall-site-portal/member/batchMemberMoney", //修改余额
        changeIntegral: "mall-site-portal/member/batchMemberIntegral", //修改积分
        freezeApi: "mall-site-portal/member/batchMemberFrozen", //冻结客户
        unFreezeApi: "mall-site-portal/member/batchMemberUnfrozen", //解冻客户
      },

      isIndeterminate: false,
      checkAll: false,

      // 数据源 标签列表
      labelOptions: [],
      assetTypeOptions: [], //资产类型
      levelOptions: [], //会员等级

      // 列表高级查询参数
      mixinTable_tableSearchSenior: {
        // 手机号
        mobile: {
          type: String,
          value: "",
          default: "",
        },
        // 客户编号
        memberCode: {
          type: String,
          value: "",
          default: "",
        },
        // 消费起始金额
        consumeAmountStart: {
          type: Number,
          value: null,
          default: null,
        },
        // 消费截止金额
        consumeAmountEnd: {
          type: Number,
          value: null,
          default: null,
        },
        // 消费起始次数
        consumeCountStart: {
          type: Number,
          value: null,
          default: null,
        },
        // 消费截止次数
        consumeCountEnd: {
          type: Number,
          value: null,
          default: null,
        },
        // 最近消费开始时间
        consumeTimeStartStr: {
          type: String,
          value: null,
          default: null,
        },
        // 最近消费结束时间
        consumeTimeEndStr: {
          type: String,
          value: null,
          default: null,
        },
        // 注册开始时间
        createdTimeStartStr: {
          type: String,
          value: null,
          default: null,
        },
        // 注册结束时间
        createdTimeEndStr: {
          type: String,
          value: null,
          default: null,
        },
        // 性别
        gender: {
          type: Number,
          value: null,
          default: null,
        },
        // 成为会员时间
        levelTimeStartStr: {
          type: String,
          value: null,
          default: null,
        },
        // 成为会员结束时间
        levelTimeEndStr: {
          type: String,
          value: null,
          default: null,
        },
        // 可用起始金额
        usableAmountStart: {
          type: Number,
          value: null,
          default: null,
        },
        // 可用截止金额
        usableAmountEmd: {
          type: Number,
          value: null,
          default: null,
        },
        // 售后起始次数
        saleAfterCountStart: {
          type: Number,
          value: null,
          default: null,
        },
        // 售后截止次数
        saleAfterCountEnd: {
          type: Number,
          value: null,
          default: null,
        },
        // 售后起始金额
        saleAfterAmountStart: {
          type: Number,
          value: null,
          default: null,
        },
        // 售后截止金额
        saleAfterAmountEnd: {
          type: Number,
          value: null,
          default: null,
        },
        // 用户标签ID集合
        tagIdLst: {
          type: [],
          value: null,
          default: null,
        },
      },

      mixinTable_tableSearchData: {
        nickName: "",
      },

      freezeDialogConfig: {
        width: "400px",
        title: "确认冻结?",
        columns: [
          {
            label: "客户名称",
            prop: "nickName",
            type: "",
          },
        ],
      },

      unFreezeDialogConfig: {
        width: "400px",
        title: "确认解冻?",
        columns: [
          {
            label: "客户名称",
            prop: "nickName",
            type: "",
          },
        ],
      },

      // exportData: {
      //   nickName: {
      //     type: String,
      //     value: "",
      //     default: "",
      //   },
      //   // 手机号
      //   mobile: {
      //     type: String,
      //     value: "",
      //     default: "",
      //   },
      //   // 客户编号
      //   memberCode: {
      //     type: String,
      //     value: "",
      //     default: "",
      //   },
      //   // 消费起始金额
      //   consumeAmountStart: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 消费截止金额
      //   consumeAmountEnd: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 消费起始次数
      //   consumeCountStart: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 消费截止次数
      //   consumeCountEnd: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 最近消费开始时间
      //   consumeTimeStartStr: {
      //     type: String,
      //     value: null,
      //     default: null,
      //   },
      //   // 最近消费结束时间
      //   consumeTimeEndStr: {
      //     type: String,
      //     value: null,
      //     default: null,
      //   },
      //   // 注册开始时间
      //   createdTimeStartStr: {
      //     type: String,
      //     value: null,
      //     default: null,
      //   },
      //   // 注册结束时间
      //   createdTimeEndStr: {
      //     type: String,
      //     value: null,
      //     default: null,
      //   },
      //   // 性别
      //   gender: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 成为会员时间
      //   levelTimeStartStr: {
      //     type: String,
      //     value: null,
      //     default: null,
      //   },
      //   // 成为会员结束时间
      //   levelTimeEndStr: {
      //     type: String,
      //     value: null,
      //     default: null,
      //   },
      //   // 可用起始金额
      //   usableAmountStart: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 可用截止金额
      //   usableAmountEmd: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 售后起始次数
      //   saleAfterCountStart: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 售后截止次数
      //   saleAfterCountEnd: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 售后起始金额
      //   saleAfterAmountStart: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 售后截止金额
      //   saleAfterAmountEnd: {
      //     type: Number,
      //     value: null,
      //     default: null,
      //   },
      //   // 用户标签ID集合
      //   tagIdLst: {
      //     type: [],
      //     value: null,
      //     default: null,
      //   },
      // },
    };
  },
  methods: {
    //   全选
    handleCheckAllChange(val) {
      let _list = [];
      if (val) {
        this.tableData.forEach((item) => {
          _list.push(item.id);
        });
      }
      this.mixinTable_selectTableData = _list;
      this.isIndeterminate = false;
    },

    clearSelection() {
      this.isIndeterminate = false;
      this.checkAll = false;
      this.mixinTable_selectTableData = [];
    },

    handleCheckedChange(value) {
      console.error(value);
      let checkedCount = value.length;
      this.checkAll = checkedCount === this.tableData.length;
      this.isIndeterminate =
        checkedCount > 0 && checkedCount < this.tableData.length;
    },

    // 打开添加/修改
    editBoxOpen(params_) {
      Edit.init({
        mixinEdit_editType: params_.type,
        id: params_.id,
        onSuccess: (res) => {
          this.mixinTable_refreshData();
        },
        onCancel: () => {
          this.mixinTable_refreshData();
        },
      });
    },
    // 初始化
    async init() {
      // 数据源 资产类型列表
      this.assetTypeOptions = await this.$vFN.Tools.getSelectListSource(
        {
          url: "mall-site-portal/member/getIntegralType",
        },
        window
      );

      // 反转数组  把积分放到第一位
      this.assetTypeOptions = this.assetTypeOptions.reverse();

      // 数据源 标签列表
      this.labelOptions = await this.$vFN.Tools.getSelectListSource(
        {
          url: "mall-site-portal/member/listMemberTag",
        },
        window
      );

      // 数据源 标签列表
      this.levelOptions = await this.$vFN.Tools.getSelectListSource(
        {
          url: "mall-site-portal/member/listMemberLevel",
        },
        window
      );

      console.log(this.levelOptions);
      // 刷新表格数据，此方法扩展时可重写
      this.mixinTable_refreshData();
    },

    //  修改余额
    updateAmount(type) {
      console.log(type);

      console.log("userArr", this.mixinTable_selectTableData);
      if (this.mixinTable_selectTableData.length == 0) {
        this.$vFN.Tools.messageError("至少选择一位用户");
        return;
      }

      let userArr_ = [];
      this.mixinTable_selectTableData.forEach((item) => {
        userArr_.push(item.id);
      });

      updateDialog.init({
        titleText: "余额",
        requestApi: this.apiUrl.changeMoney,
        updateType: "Amount",
        userArr: userArr_,
        onSuccess: (res) => {
          this.mixinTable_refreshData();
        },
      });
    },

    // 批量打标签
    batchAddTags() {
      if (this.mixinTable_selectTableData.length == 0) {
        this.$vFN.Tools.messageError("至少选择一位用户");
        return;
      }

      let userArr_ = [];
      this.mixinTable_selectTableData.forEach((item) => {
        userArr_.push(item.id);
      });

      AddTagsDialog.init({
        userArr: userArr_,
        onSuccess: (res) => {
          this.mixinTable_refreshData();
        },
      });
    },

    // 选择下拉框  element 回调一个key
    select(command_) {
      console.log(command_);

      if (this.mixinTable_selectTableData.length == 0) {
        this.$vFN.Tools.messageError("至少选择一位用户");
        return;
      }

      let userArr_ = [];
      this.mixinTable_selectTableData.forEach((item) => {
        userArr_.push(item.id);
      });

      updateDialog.init({
        titleText: command_.label,
        requestApi: this.apiUrl.changeIntegral,
        updateType: "Integral",
        integralId: command_.value,
        userArr: userArr_,
        onSuccess: (res) => {
          this.mixinTable_refreshData();
        },
      });
    },

    // 导出报表
    report() {
      Report.init({})
    },
    // async exportTable() {
    //   let dataObj_ = {};
    //   for (const key in this.exportData) {
    //     dataObj_[key] = this.exportData[key].value;
    //   }

    //   let res = await this.$vFN.Http.post(
    //     {
    //       url: "mall-site-portal/member/exportMemberList",
    //       data: dataObj_,
    //     },
    //     window
    //   );

    //   if (res._ok) {
    //     this.$vFN.Tools.messageSuccess("操作成功，请到下载中心查看");
    //   }
    // },

    // // 清空导出筛选
    // clearExport() {
    //   for (const key in this.exportData) {
    //     this.exportData[key].value = this.exportData[key].default;
    //   }
    // },

    // 改变客户账号状态  冻结 or 解冻
    changeUseStatus(data_, status_) {
      console.log("data_", data_);
      if (!data_) {
        data_ = [...this.mixinList_selectTableData];
      }
      let url_ = "";
      let config_ = "";

      if (status_ === "freeze") {
        url_ = this.apiUrl.freezeApi;
        config_ = this.freezeDialogConfig;
      } else if (status_ === "unFreeze") {
        url_ = this.apiUrl.unFreezeApi;
        config_ = this.unFreezeDialogConfig;
      }

      freezeDialog.init({
        appWindow: this.appWindow,
        data: data_,
        config: config_,
        url: url_,
        onSuccess: () => {
          this.$vFN.Tools.messageSuccess("操作成功");
          this.mixinTable_refreshData();
        },
      });
    },

    // 会员等级id转换为文字
    levelId2Text(id_) {
      let text_ = "";
      this.levelOptions.forEach((item) => {
        if (item.value == id_) {
          text_ = item.label;
        }
      });

      return text_;
    },
  },
  watch: {},
  mounted() {
    this.init();
  },
  activated() {},
};
</script>
